package com.pisolution.scheduler.filesystem;

import com.pisolution.scheduler.core.extension.Extension;

/**
 * 调度平台通用文件系统定义.
 *
 * <p><b>用途</b></p>
 * <p>
 *     文件系统的引入 主要是为了以极低的代价实现调度系统工作节点之间的数据交互 包括但不限于日志文件的存取与工作流上下游之间的
 *     数据传递 如果将来需要更加具有实时性的需求 则可以考虑将数据传递功能移除 改用网络通信的方式实现.
 * </p>
 *
 * <p><b>使用方法</b></p>
 * <p>
 *     使用时需要谨记 切不可直接使用文件系统的实现类 平台运行过程中会依据特定的规则 选择众多实现者中优先度最高的实现者予以使用
 *     具体的方法定义可以参考API的注释.
 * </p>
 *
 * @author sora
 * @version 0.1.0
 */
public interface SchedulerFileSystem extends Extension {
    // -------------------------------------------------------------------------------------------------
    //  基础操作
    // -------------------------------------------------------------------------------------------------

    /**
     * 检查给定文件夹是否存在 如若不存在 则创建该文件夹及其父文件夹.
     *
     * @param path 待创建的文件夹路径.
     *
     * @throws Exception 如果无法创建给定的文件夹.
     */
    void mkdir(final String path) throws Exception;

    // -------------------------------------------------------------------------------------------------
    //  文件交互
    // -------------------------------------------------------------------------------------------------
}
